Tracking এবং No-Tracking Queries

Microsoft Technologies - এন্টিটি ফ্রেমওয়র্ক (Entity Framework) Advanced Topics এবং Entity Framework Best Practices |
205
205

Tracking এবং No-Tracking হল Entity Framework এর দুটি গুরুত্বপূর্ণ কৌশল যা ডেটাবেস থেকে তথ্য পড়ার সময় কীভাবে রেকর্ডের পরিবর্তন ট্র্যাক করা হবে তা নিয়ন্ত্রণ করে। এগুলি প্রধানত পারফরম্যান্স এবং মেমরি ব্যবহারের সাথে সম্পর্কিত, এবং বিভিন্ন পরিস্থিতিতে এর ব্যবহার আলাদা হতে পারে।


Tracking Queries

Tracking Queries হল Entity Framework-এর ডিফল্ট আচরণ যেখানে ডেটাবেস থেকে একটি রেকর্ড পড়ার সময়, সেই রেকর্ডটি Entity Framework এর Change Tracker দ্বারা ট্র্যাক করা হয়। এর মানে হল যে, Entity Framework সেই রেকর্ডের উপর যে কোন পরিবর্তন চিহ্নিত করবে এবং SaveChanges() কল করার পর, সেই পরিবর্তন ডেটাবেসে সেভ হবে।

এটি সাধারণত তখন ব্যবহার করা হয় যখন আপনি রেকর্ডগুলি পরিবর্তন করতে চান এবং সেগুলির উপর কিছু অ্যাকশন নিতে চান, যেমন আপডেট বা ডিলিট করা।

Tracking Example:

var student = db.Students.FirstOrDefault(s => s.StudentId == 1);
student.Name = "Updated Name";

// EF will track the changes to this student
db.SaveChanges();  // The update will be saved to the database

এখানে:

  • student অবজেক্টটি Entity Framework এর Change Tracker দ্বারা ট্র্যাক হবে, তাই SaveChanges() কল করার পর সেই পরিবর্তন ডেটাবেসে আপডেট হবে।

No-Tracking Queries

No-Tracking Queries তখন ব্যবহার করা হয় যখন আপনি শুধুমাত্র ডেটা পড়তে চান এবং ডেটাবেসে কোনো পরিবর্তন করতে চান না। এই কৌশলে Entity Framework ডেটাবেস থেকে ডেটা লোড করার সময় Change Tracker ব্যবহার করে না। এর ফলে, Tracking Queries এর তুলনায় মেমরি ব্যবহারের পরিমাণ কম হয় এবং পারফরম্যান্স ভালো হয়, বিশেষত যখন শুধু রিড অপারেশন করা হচ্ছে এবং ডেটাবেসে কোনো আপডেট বা ডিলিট করতে হবে না।

No-Tracking Example:

var students = db.Students.AsNoTracking().ToList();

এখানে:

  • .AsNoTracking() মেথডটি নির্দেশ করে যে Entity Framework এই কুয়েরি থেকে প্রাপ্ত রেকর্ডগুলিকে ট্র্যাক করবে না।
  • এতে করে Change Tracker ব্যবহার করা হয় না এবং এটি পারফরম্যান্সের ক্ষেত্রে অনেক দ্রুত হয়, বিশেষ করে যখন শুধুমাত্র ডেটা রিড করা হচ্ছে।

Tracking এবং No-Tracking এর মধ্যে পার্থক্য

বৈশিষ্ট্যTracking QueriesNo-Tracking Queries
ডেটা ট্র্যাকিংEntity Framework রেকর্ডের পরিবর্তন ট্র্যাক করে।রেকর্ডের কোনো পরিবর্তন ট্র্যাক করা হয় না।
পারফরম্যান্সমেমরি এবং পারফরম্যান্সের উপর বেশি প্রভাব পড়ে, কারণ Entity Framework প্রতিটি রেকর্ডের পরিবর্তন ট্র্যাক করে।দ্রুত, কারণ ডেটা শুধু পড়া হয়, পরিবর্তন ট্র্যাক করা হয় না।
ব্যবহারযখন আপনি রেকর্ড পরিবর্তন (যেমন, Update বা Delete) করতে চান।যখন আপনি শুধুমাত্র ডেটা রিড করতে চান এবং পরিবর্তন করতে চান না।
মেমরি ব্যবহারবেশি মেমরি ব্যবহার করে কারণ রেকর্ডের স্টেট ট্র্যাক করা হয়।কম মেমরি ব্যবহার হয় কারণ কোনো স্টেট ট্র্যাক করা হয় না।

কোন পরিস্থিতিতে Tracking এবং No-Tracking ব্যবহার করবেন?

Tracking Queries ব্যবহার করার পরিস্থিতি:

  1. যখন আপনি কোনো রেকর্ডে পরিবর্তন (এডিট বা ডিলিট) করতে চান এবং সেগুলি SaveChanges() দিয়ে সেভ করতে চান।
  2. যখন আপনি একটি নির্দিষ্ট রেকর্ডের পরিবর্তন ট্র্যাক করতে চান, যেমন CRUD অপারেশনস এর সময়।

No-Tracking Queries ব্যবহার করার পরিস্থিতি:

  1. যখন আপনি লং-লিস্ট বা লিস্ট ভিউ এ শুধু ডেটা প্রদর্শন করতে চান এবং কোনো পরিবর্তন করতে চান না।
  2. যখন আপনি ডেটার জন্য রিড-ওনলি অ্যাক্সেস চান এবং এর জন্য কম মেমরি ও পারফরম্যান্সে সুবিধা চান।

No-Tracking ব্যবহার করার সময় এর সুবিধা

  • উন্নত পারফরম্যান্স: যখন আপনি শুধুমাত্র ডেটা রিড করছেন, তখন No-Tracking ব্যবহারের ফলে অ্যাপ্লিকেশন কম মেমরি ব্যবহার করে এবং দ্রুত ডেটা প্রদান করে।
  • কম মেমরি ব্যবহার: Tracking না করায় Change Tracker মেমরিতে অতিরিক্ত তথ্য সংরক্ষণ করে না, যা মেমরি ব্যবহারের পরিমাণ কমায়।

No-Tracking এর সীমানা:

  • No-Tracking ব্যবহারের সময়, আপনি যদি রেকর্ডগুলিতে কোনো পরিবর্তন করতে চান তবে এটি সম্ভব হবে না। ডেটা শুধুমাত্র পড়া হয় এবং পরিবর্তন ট্র্যাক করা হয় না।

AsNoTracking() Method in Detail

AsNoTracking() মেথডটি কেবল IQueryable কুয়েরি সম্পর্কিত, তাই এটি কেবল লিস্টে রিটার্ন হওয়া রেকর্ডগুলির জন্য কাজ করে। এটি কুয়েরি স্ট্রিমিং এর সময় Entity Framework কে বলছে যে, কোনো পরিবর্তন ট্র্যাক করো না, যেহেতু এই রেকর্ডগুলির জন্য কোনো আপডেট বা ডিলিট হবে না।

var students = db.Students.AsNoTracking().Where(s => s.Age > 20).ToList();

এখানে:

  • Where কন্ডিশনের মাধ্যমে ডেটা ফিল্টার করা হয়েছে, কিন্তু .AsNoTracking() মেথডের মাধ্যমে এই ডেটার কোনো পরিবর্তন ট্র্যাক করা হবে না।

উপসংহার

Tracking Queries এবং No-Tracking Queries এর মধ্যে পার্থক্য মেমরি ব্যবহারের ও পারফরম্যান্সের দিক থেকে গুরুত্বপূর্ণ। Tracking Queries তখনই ব্যবহার করুন যখন আপনি ডেটার সাথে পরিবর্তন করতে চান এবং No-Tracking তখনই ব্যবহার করুন যখন আপনি শুধু রিড-অপারেশন করছেন এবং পারফরম্যান্সে আরও উন্নতি চান।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion